package com.yidu.drug.action;

import java.math.BigDecimal;
import java.sql.Timestamp;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.UUID;

import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import com.yidu.drug.common.Page;

import com.yidu.drug.model.FdSellDetailModel;
import com.yidu.drug.model.SalesReturnModel;
import com.yidu.drug.service.FinancialRecordService;
import com.yidu.drug.service.FinancialSheetsService;
import com.yidu.drug.service.InventoryRecordService;
import com.yidu.drug.service.RepertoryService;
import com.yidu.drug.service.ReturnsDetailService;
import com.yidu.drug.service.SalesReturnService;

/** 退货单的Action
 * @author meilina
 * 2018年8月9日上午11:29:45
 * @version 1.0
 */
@Controller
@RequestMapping("/salesReturn")
public class SalesReturnAction {
	/**
	 * 退货Service
	 */
	@Resource
	private SalesReturnService saleReturnService;
	/**
	 * 退货详情Service
	 */
	@Resource
	private ReturnsDetailService returnsDetailService;
	/**
	 * 财务Service
	 */
	@Resource
	private FinancialSheetsService financialSheetsService;
	/**
	 * 财务记录Service
	 */
	@Resource
	private FinancialRecordService financialRecordService;
	/**
	 * 库存Service
	 */
	@Resource
	private RepertoryService repertoryService;
	/**
	 * 库存记录Service
	 */
	@Resource
	private InventoryRecordService inventoryRecordService;
	
	/**
	 * 查询所有和条件查询分页--退货单表
	 * @param response 响应
	 * @param reCause 传入参数退货原因
	 * @param reOper 传入参数操作人
	 * @param page 传入参数页面
	 * @param limit 传入分页
	 * @return maps 返回maps集合
	 */
	@RequestMapping("/findAll")
	@ResponseBody
	public Map<String, Object> findAll(HttpServletResponse response,String reCause,String reOper,int page,int limit) {
		//设置响应编码
		response.setCharacterEncoding("UTF-8");
		//新建一个Page对象
		Page pages = new Page();
		//设置页数(页数)
		pages.setPage(page);
		//设置行数（分页）
		pages.setRows(limit);
		//新建Map集合String型
		Map<String,String> map=new HashMap<>();
		//根据条件查询的搜索框--原因
		map.put("reCause", reCause);
		//根据条件查询的搜索框--操作人
		map.put("reOper", reOper);
		//开始  String强转(Page对象得到开始)
		map.put("start", String.valueOf(pages.getStart()));
		//总行数   String强转(Page对象得到行数)
		map.put("rows", String.valueOf(pages.getRows()));
		//退货集合 = 调用退货Service的查找所有方法（map）
		List<SalesReturnModel> list = saleReturnService.findAllPage(map);
		//foreach循环退货表
		for(SalesReturnModel salesReturnModel:list){
			//新建SDF对象  转换日期格式
 			SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
			//定义String类型  日期 =SDF对象.退货模型得到日期
			String reDates = sdf.format(salesReturnModel.getReDate());
			//退货模型给日期赋值(定义的日期)
			salesReturnModel.setReDates(reDates);
		}
		//新建Map集合(字符串，对象)
		Map<String, Object> maps = new HashMap<>();
		//新建退货表
		SalesReturnModel salesReturn = new SalesReturnModel();
		//需要符合layUI格式，code msg count(调用退货Service的查找所有行数方法) data
		maps.put("code", 0);
		maps.put("msg", "1");
		maps.put("count", saleReturnService.findTotalRows(salesReturn));
		maps.put("data", list);
		//返回maps集合
		return maps;
	}
	
	
	/**
	 * 查询所有和条件查询分页--分店销售明细表
	 * @param response 响应
	 * @param me 会员对象
	 * @param page 页数
	 * @param limit 行数
	 * @return maps 返回maps集合
	 */
	@RequestMapping("/findAllFdSellDetail")
	@ResponseBody
	public Map<String, Object> findAllFdSellDetail(HttpServletResponse response,String reCause,String sellId ,String reOper,int page,int limit) {
		//设置响应编码
		response.setCharacterEncoding("UTF-8");
		//新建一个Page对象
		Page pages = new Page();
		//设置页数(页数)
		pages.setPage(page);
		//设置行数(分页)
		pages.setRows(limit);
		//新建Map集合(字符串)
		Map<String, String> map=new HashMap<>();
		//根据条件查询的搜索框--原因
		map.put("reCause", reCause);
		//根据条件查询的搜索框--操作人
		map.put("reOper", reOper);
		//根据条件查询的搜索框--销售ID
		map.put("sellId", sellId);
		//开始  String强转(Page对象得到开始)
		map.put("start", String.valueOf(pages.getStart()));
		//行数  String强转(Page对象得到行数)
		map.put("rows", String.valueOf(pages.getRows()));
		//分店销售详情集合 = 调用退货Service的查找所有分店销售详情方法
		List<FdSellDetailModel> list = saleReturnService.findAllFdSellDetail(map);
		//新建Map集合(字符串，对象)
		Map<String, Object> maps = new HashMap<>();
		//新建分店销售详情表对象
		FdSellDetailModel fdSellDetail = new FdSellDetailModel();
		//需要符合layUI格式，code msg count(调用退货Service的查找行数方法) data
		maps.put("code", 0);
		maps.put("msg", "1");
		maps.put("count", saleReturnService.findCount(fdSellDetail));
		maps.put("data", list);
		//返回maps集合
		return maps;
	}
	
	/**
	 * 增加和修改方法
	 * @param session web存储空间
	 * @param me 会员对象
	 * @return 页面跳转
	 */
	@RequestMapping("/save")
	@ResponseBody
	public String save(SalesReturnModel salesReturn,BigDecimal totalMoney,String reCause) {
		//定义退货Id = 随机ID  -空
		String reId = UUID.randomUUID().toString().replaceAll("-", "");
		//新建日期格式(新建日期得到时间)
		Timestamp reDate = new Timestamp(new Date().getTime());
		//退货表设置退货ID
		salesReturn.setReId(reId);
		//退货表设置退货日期
		salesReturn.setReDate(reDate);
		//退货表设置退货原因
		salesReturn.setReCause(reCause);
		//退货表设置退货金额(总金额)
		salesReturn.setReMoney(totalMoney);
		//退货表设置是否有效
		salesReturn.setIsva("否");
		//退货表设置排序
		salesReturn.setSort(1);
		//退货表设置分店ID
		salesReturn.setFilId("1");
		//定义行数 = 调用退货Service的保存方法
		int rows = saleReturnService.save(salesReturn);
	
		//如果行数大于零
		if(rows>0){
			//返回成功
			return "ok";
		}else{
			//否则返回失败
			return "no";
	
		}
		
	}
}